package com.fanco.learn_datastruct_leetcode.designpattern.template;

/**
 * @author qiaowang 2022/2/17
 * 描述
 */
public abstract class SoyaMilk {
    // make方法就是 模板方法，子类负责对抽象方法进行实现。
    final void make() {
        select();
        if (customWantCondiments()) {
            add();
        }
        soak();
        beat();
    }

    void select() {
        System.out.println("选择好的豆子");
    }

    abstract void add();

    void soak() {
        System.out.println("用水浸泡豆子");
    }

    void beat() {
        System.out.println("用豆子达成豆浆");
    }

    // 钩子方法
    boolean customWantCondiments() {
        return true;
    }
}

